package szoftlab4;

import java.util.ArrayList;

/**
 * Oszcilloszkóp, azaz olyan építőelem, mely megjeleníti az összes értéket,
 * amely korábban a bemenetén megjelent.
 * @author Peti
 */
public class Oszcilloszkop extends AktivAtomiElem implements NemVezetekEpitoelem
{
    private ArrayList<Boolean> eddigiAllapotok;

    /**
     * Az oszcilloszkóp konstruktora. Létrehozza a bemenetet és az állapotlistát.
     */
    public Oszcilloszkop()
    {
        bemenetek.add(new Bemenet(null));
        eddigiAllapotok = new ArrayList<Boolean>();
    }

    /**
     * Visszaállítja alapállapotba az oszcilloszkópot.
     */
    public void visszaallit()
    {
        eddigiAllapotok = new ArrayList<Boolean>();
    }

    /**
     * Lépteti az oszcilloszkóp állapotát.
     */
    public void leptet()
    {
        eddigiAllapotok.add(bemenetek.get(0).getErtek());
    }

    /**
     * Csatlakozást kezdeményez egy megadott sorszámú bemenetéről egy másik
     * építőelem megadott sorszámú kimenetére.
     *
     * @param bemenetIndexe
     * A megadott bemenet sorszáma.
     *
     * @param cel
     * A másik építőelem.
     *
     * @param kimenetIndexe
     * A másik építőelem megadott kimenetének sorszáma.
     *
     */
    public void csatlakozik(int bemenetIndexe, Epitoelem cel, int kimenetIndexe)
    {
        bemenetek.get(bemenetIndexe).csatlakozik(this, cel, bemenetIndexe, kimenetIndexe);
    }

    /**
     * Csatlakozást fogad egy vezeték megadott sorszámú bemenetéről
     * egy megadott sorszámú kimenetére.
     *
     * @param bemenetIndexe
     * A kezdeményező vezeték megadott bemenetének sorszáma.
     *
     * @param innen
     * A kezdeményező vezeték.
     *
     * @param kimenetIndexe
     * A megadott kimenet sorszáma.
     *
     * @return
     * A csatlakozásra kijelölt kimenet.
     *
     */
    public Kimenet csatlakozik(int bemenetIndexe, Vezetek innen, int kimenetIndexe)
    {
        return null;
    }

    /**
     * Csatlakozást fogad egy nem vezeték típusú építőelem megadott sorszámú
     * bemenetéről egy megadott sorszámú kimenetére.
     *
     * @param bemenetIndexe
     * A kezdeményező építőelem megadott bemenetének sorszáma.
     *
     * @param innen
     * A kezdeményező építőelem.
     *
     * @param kimenetIndexe
     * A megadott kimenet sorszáma.
     *
     * @return
     * A csatlakozásra kijelölt kimenet.
     *
     */
    public Kimenet csatlakozik(int bemenetIndexe, NemVezetekEpitoelem innen, int kimenetIndexe)
    {
        return null;
    }

    /**
     * Nem csinál semmit.
     */
    public void szamol()
    {
    }
    
}
